# coding: utf-8

from __future__ import absolute_import

from flask import json
from six import BytesIO

{{#imports}}{{import}}  # noqa: E501
{{/imports}}
from {{packageName}}.test import BaseTestCase


class {{#operations}}Test{{classname}}(BaseTestCase):
    """{{classname}} integration test stubs"""

   {{#operation}}
   {{#contents}}
   {{#@first}}
    def test_{{operationId}}(self):
        """Test case for {{{operationId}}}

        {{{summary}}}
        """
        {{#bodyParam}}
        {{paramName}} = {{{example}}}
        {{/bodyParam}}
        {{#queryParams}}
        {{#@first}}query_string = [{{/@first}}{{^@first}}                {{/@first}}('{{paramName}}', {{{example}}}){{#hasMore}},{{/hasMore}}{{#@last}}]{{/@last}}
        {{/queryParams}}
        {{#headerParams}}
        {{#@first}}headers = [{{/@first}}{{^@first}}           {{/@first}}('{{paramName}}', {{{example}}}){{#hasMore}},{{/hasMore}}{{#@last}}]{{/@last}}
        {{/headerParams}}
        {{#formParams}}
        {{#@first}}data = dict({{/@first}}{{^@first}}            {{/@first}}{{paramName}}={{{example}}}{{#hasMore}},{{/hasMore}}{{#@last}}){{/@last}}
        {{/formParams}}
        response = self.client.open(
            '{{#contextPath}}{{{.}}}{{/contextPath}}{{{path}}}'{{#pathParams}}{{#@first}}.format({{/@first}}{{paramName}}={{{example}}}{{#hasMore}}, {{/hasMore}}{{^hasMore}}){{/hasMore}}{{/pathParams}},
            method='{{httpMethod}}'{{#bodyParam}},
            data=json.dumps({{paramName}}){{^consumes}},
            content_type='application/json'{{/consumes}}{{/bodyParam}}{{#headerParams}}{{#@first}},
            headers=headers{{/@first}}{{/headerParams}}{{#formParams}}{{#@first}},
            data=data{{/@first}}{{/formParams}}{{#consumes}}{{#@first}},
            content_type='{{{mediaType}}}'{{/@first}}{{/consumes}}{{#queryParams}}{{#@first}},
            query_string=query_string{{/@first}}{{/queryParams}})
        self.assert200(response,
                       'Response body is : ' + response.data.decode('utf-8'))

   {{/@first}}
   {{/contents}}
   {{/operation}}
{{/operations}}

if __name__ == '__main__':
    import unittest
    unittest.main()
